package com.todo.member.application.service;

import com.todo.common.common.entity.response.page.PageResult;
import com.todo.member.application.entity.bo.MemberTaskBO;
import com.todo.member.application.entity.condition.MemberTaskConditionBO;
import com.todo.member.common.enums.MemberTaskStatusEnum;

import java.util.List;

/**
 * @author azhebuxing
 * @date 2025/3/5 02:07
 * @description
 */
public interface MemberTaskService {

    /**
     * 创建任务
     *
     * @param memberTaskBO
     * @return
     */
    Boolean insertMemberTask(MemberTaskBO memberTaskBO);

    /**
     * 根据主键更新任务
     *
     * @param memberTaskBO
     * @return
     */
    Boolean updateMemberTask(MemberTaskBO memberTaskBO);

    /**
     * 根据主键删除任务
     *
     * @param id
     * @return
     */
    Boolean removeMemberTaskById(Long id);

    /**
     * 根据主键查询任务详情
     *
     * @param id
     * @return
     */
    MemberTaskBO queryMemberTaskById(Long id);

    /**
     * 更新任务状态
     *
     * @param id
     * @param oldStatus
     * @param newStatus
     * @return
     */
    Boolean updateMemberTaskStatusById(Long id, MemberTaskStatusEnum oldStatus, MemberTaskStatusEnum newStatus);

    /**
     * 多条件查询任务
     *
     * @param memberTaskConditionBO
     * @return
     */
    PageResult<MemberTaskBO> queryMemberTaskByPage(MemberTaskConditionBO memberTaskConditionBO);

    /**
     * 查询有效的任务列表
     *
     * @return
     */
    List<MemberTaskBO> queryEffectiveMemberTaskList();
}
